home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / pascal / nonstop.zip / NONSTOP.PAS < prev    next >
Pascal/Delphi Source File  |  1990-09-27  |  2KB  |  55 lines

  1. {Copyright (C) 1990 by J. Scott Sanbar.  All Rights Reserved}
  2.  
  3. {Needs sister .ASM module NONSTOP.ASM                       }
  4.  
  5. unit NonStop;                         {Makes your program UNSTOPPABLE!}
  6.  
  7. interface
  8.  
  9.  var
  10.    Intr09 : pointer absolute $0000:$0024; {Interrupt $09, keyboard ISR}
  11.    OldIntr09 : pointer;                   {Original Interrupt $09     }
  12.  
  13. const
  14.    NoBoot  : boolean = true;              {flag to disable soft boot  }
  15.    NoBreak : boolean = true;              {flag to disable Ctrl-Break }
  16.    NoCtrlC : boolean = true;              {flag to disable Ctrl-C     }
  17.  
  18.  procedure InstallNonStopISR;
  19.  procedure NonStopExitProc;
  20.  
  21. implementation
  22.  
  23.  var
  24.    PreNonStopExitProc : pointer;
  25.  
  26.  const
  27.    Installed : boolean = false;
  28.  
  29.  procedure NonStopISR; External; {$L NonStop}
  30.  
  31.  procedure InstallNonStopISR;
  32.  
  33.  begin
  34.   if not Installed then
  35.   begin
  36.    OldIntr09 := Intr09;
  37.    inline($fa);                       {CLI - disable interrupts         }
  38.    Intr09 := @NonStopISR;              {Link NonStop into interrupt chain}
  39.    inline($fb);                       {STI - enable interrupts          }
  40.    PreNonStopExitProc := ExitProc;    {Save old ExitProc                }
  41.    ExitProc := @NonStopExitProc;      {Link in NonStopExitProc          }
  42.    Installed := true;
  43.   end;
  44.  end;
  45.  
  46.  procedure NonStopExitProc;
  47.  
  48.  begin
  49.   ExitProc := PreNonStopExitProc;      {Point ExitProc to next  }
  50.   inline($fa);                         {CLI - disable interrupts}
  51.   Intr09 := OldIntr09;                 {Restore Original Vector }
  52.   inline($fb);                         {STI - enable interrupts }
  53.  end;
  54.  
  55. end.